test(dash): LLMQ quorum-tail verification leaf (S7) - #321
Merged
Conversation
Bring the quorum/LLMQ verification leaf from dash-spv-embedded onto master (the next staged slice after SimplifiedMNList #309): the mnlistdiff quorum-tail parser + in-memory active-set tracker. - vendor/llmq_commitment.hpp CFinalCommitment + DYNBITSET + qfcommit - vendor/quorum_tail.hpp fail-safe structured tail parser - coin/quorum_manager.hpp in-memory active-set tracker test_dash_quorum.cpp adds 11 bit-exact wire KATs: byte-exact CFinalCommitment (indexed-version gate, LSB-first DYNBITSET, malleated pad-bit rejection), parse_quorum_tail all-sections / empty / trailing- garbage, parse_qfcommit strict-tail, and QuorumManager apply/find/ delete/replace_state semantics. 11/11 green on Linux x86_64. Adapted the vendored 1-arg SERIALIZE_METHODS to the master macro name C2POOL_SERIALIZE_METHODS (2-arg SERIALIZE_METHODS is btclibs-only). Fenced to src/impl/dash/ + test harness; header-only, no shared touch. BLS verification and live-node active-set cross-check remain Phase L.
frstrtr
added a commit
that referenced
this pull request
Jun 22, 2026
…325) S7 quorum-root leaf between the LLMQ quorum-tail leaf (#321) and embedded_gbt main. Lands src/impl/dash/coin/quorum_root.hpp (compute_merkle_root_quorums over the QuorumManager active set, mirroring dashcore CalcCbTxMerkleRootQuorums) plus a self-contained test_dash_quorum_root.cpp pinning: - llmq_uses_rotation mainnet type flags (5,6 rotated); - hash_commitment == SHA256d(pack(CFinalCommitment)) frozen golden; - merkle primitives (empty/singleton/pair/odd-triple); - set selection: all non-rotated entries + rotated latest-per-index dedup, lexicographically-sorted SHA256d merkle, frozen root golden. End-to-end live-mnlistdiff cross-check deferred to Phase L. Fenced to src/impl/dash; wired into test/CMakeLists.txt and build.yml gtest + sanitizer target lists. 11/11 green Linux x86_64. Co-authored-by: frstrtr <frstrtr@users.noreply.github.com>
frstrtr
added a commit
that referenced
this pull request
Jun 23, 2026
test(dash): LLMQ quorum-tail verification leaf (S7)
frstrtr
added a commit
that referenced
this pull request
Jun 23, 2026
…325) S7 quorum-root leaf between the LLMQ quorum-tail leaf (#321) and embedded_gbt main. Lands src/impl/dash/coin/quorum_root.hpp (compute_merkle_root_quorums over the QuorumManager active set, mirroring dashcore CalcCbTxMerkleRootQuorums) plus a self-contained test_dash_quorum_root.cpp pinning: - llmq_uses_rotation mainnet type flags (5,6 rotated); - hash_commitment == SHA256d(pack(CFinalCommitment)) frozen golden; - merkle primitives (empty/singleton/pair/odd-triple); - set selection: all non-rotated entries + rotated latest-per-index dedup, lexicographically-sorted SHA256d merkle, frozen root golden. End-to-end live-mnlistdiff cross-check deferred to Phase L. Fenced to src/impl/dash; wired into test/CMakeLists.txt and build.yml gtest + sanitizer target lists. 11/11 green Linux x86_64. Co-authored-by: frstrtr <frstrtr@users.noreply.github.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
S7 quorum/LLMQ verification leaf — next staged slice after SimplifiedMNList (#309)
Lands the quorum/LLMQ verification leaf from
dash-spv-embeddedonto master: the mnlistdiff quorum tail parser + in-memory active-set tracker. This is the link between the SimplifiedMNList leaf (#309) and the embedded_gbt main on the S7 chain, and the consensus prerequisite for the payout-replay-protection / ChainLock path this lane owns.Sources (header-only, fenced to
src/impl/dash/)coin/vendor/llmq_commitment.hpp—CFinalCommitment(+ DYNBITSET formatter, type-6 qfcommit payload parser)coin/vendor/quorum_tail.hpp— fail-safe structured tail parser (deletedQuorums + newQuorums + quorumsCLSigs)coin/quorum_manager.hpp— in-memory active-set tracker (apply / find / replace_state)Tests —
test/test_dash_quorum.cpp, 11 KATs, 11/11 green on Linux x86_64CFinalCommitmentwire (non-indexed v1) against a hand-built vectorquorumIndex(int16); non-indexed omits it (Δlen == 2)parse_quorum_tail: all-sections decode, empty=clean-success, trailing-garbage rejectionparse_qfcommit_payload: round-trip + strict-tail policyQuorumManager: insert/replace/delete, find / find_mutable / active_by_type / replace_state / CL-sig cachingNotes
SERIALIZE_METHODS→ master macro nameC2POOL_SERIALIZE_METHODS(the 2-argSERIALIZE_METHODSis btclibs-only). Same rename class as PR-0 S1: parameterize ltc share path on core::CoinParams #92.test_dash_quorumintest/CMakeLists.txt+ both dash--targetlists inbuild.yml(mirrors dash(S7): SimplifiedMNList leaf — wire + CalcHash + memcmp sort + merkle root #309).Surfaced for operator merge-tap after CI rollup — not self-merging (consensus-bearing lane).